From 0b5f12975fefe625b643d6ac79ec58c88ea6d289 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 12 Jul 2012 08:35:50 -0400 Subject: [PATCH] Consistently allow -1 to mean 'append' in tree models Both GtkListStore and GtkTreeStore had a few methods that allowed -1 to mean 'append' when specified as a position, but others that demanded positive position arguments. Make this consistent by always allowing -1. https://bugzilla.gnome.org/show_bug.cgi?id=667808 --- gtk/gtkliststore.c | 23 +++++++++-------------- gtk/gtktreestore.c | 12 ++++++------ 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c index ee07b87811..f19b64e9d2 100644 --- a/gtk/gtkliststore.c +++ b/gtk/gtkliststore.c @@ -1249,12 +1249,12 @@ gtk_list_store_remove (GtkListStore *list_store, * gtk_list_store_insert: * @list_store: A #GtkListStore * @iter: (out): An unset #GtkTreeIter to set to the new row - * @position: position to insert the new row + * @position: position to insert the new row, or -1 for last * * Creates a new row at @position. @iter will be changed to point to this new - * row. If @position is larger than the number of rows on the list, then the - * new row will be appended to the list. The row will be empty after this - * function is called. To fill in values, you need to call + * row. If @position is -1 or is larger than the number of rows on the list, + * then the new row will be appended to the list. The row will be empty after + * this function is called. To fill in values, you need to call * gtk_list_store_set() or gtk_list_store_set_value(). * **/ @@ -1271,7 +1271,6 @@ gtk_list_store_insert (GtkListStore *list_store, g_return_if_fail (GTK_IS_LIST_STORE (list_store)); g_return_if_fail (iter != NULL); - g_return_if_fail (position >= 0); priv = list_store->priv; @@ -1280,7 +1279,7 @@ gtk_list_store_insert (GtkListStore *list_store, seq = priv->seq; length = g_sequence_get_length (seq); - if (position > length) + if (position > length || position < 0) position = length; ptr = g_sequence_get_iter_at_pos (seq, position); @@ -1405,14 +1404,10 @@ void gtk_list_store_append (GtkListStore *list_store, GtkTreeIter *iter) { - GtkListStorePrivate *priv; - g_return_if_fail (GTK_IS_LIST_STORE (list_store)); g_return_if_fail (iter != NULL); - priv = list_store->priv; - - gtk_list_store_insert (list_store, iter, g_sequence_get_length (priv->seq)); + gtk_list_store_insert (list_store, iter, -1); } static void @@ -2225,7 +2220,7 @@ gtk_list_store_insert_with_values (GtkListStore *list_store, seq = priv->seq; length = g_sequence_get_length (seq); - if (position > length) + if (position > length || position < 0) position = length; ptr = g_sequence_get_iter_at_pos (seq, position); @@ -2261,7 +2256,7 @@ gtk_list_store_insert_with_values (GtkListStore *list_store, * gtk_list_store_insert_with_valuesv: * @list_store: A #GtkListStore * @iter: (out) (allow-none): An unset #GtkTreeIter to set to the new row, or %NULL. - * @position: position to insert the new row + * @position: position to insert the new row, or -1 for last * @columns: (array length=n_values): an array of column numbers * @values: (array length=n_values): an array of GValues * @n_values: the length of the @columns and @values arrays @@ -2305,7 +2300,7 @@ gtk_list_store_insert_with_valuesv (GtkListStore *list_store, seq = priv->seq; length = g_sequence_get_length (seq); - if (position > length) + if (position > length || position < 0) position = length; ptr = g_sequence_get_iter_at_pos (seq, position); diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c index 6271359fc4..21e7a205d9 100644 --- a/gtk/gtktreestore.c +++ b/gtk/gtktreestore.c @@ -1266,14 +1266,14 @@ gtk_tree_store_remove (GtkTreeStore *tree_store, * @tree_store: A #GtkTreeStore * @iter: (out): An unset #GtkTreeIter to set to the new row * @parent: (allow-none): A valid #GtkTreeIter, or %NULL - * @position: position to insert the new row + * @position: position to insert the new row, or -1 for last * * Creates a new row at @position. If parent is non-%NULL, then the row will be * made a child of @parent. Otherwise, the row will be created at the toplevel. - * If @position is larger than the number of rows at that level, then the new - * row will be inserted to the end of the list. @iter will be changed to point - * to this new row. The row will be empty after this function is called. To - * fill in values, you need to call gtk_tree_store_set() or + * If @position is -1 or is larger than the number of rows at that level, then + * the new row will be inserted to the end of the list. @iter will be changed + * to point to this new row. The row will be empty after this function is + * called. To fill in values, you need to call gtk_tree_store_set() or * gtk_tree_store_set_value(). * **/ @@ -1583,7 +1583,7 @@ gtk_tree_store_insert_with_values (GtkTreeStore *tree_store, * @tree_store: A #GtkTreeStore * @iter: (out) (allow-none): An unset #GtkTreeIter to set the new row, or %NULL. * @parent: (allow-none): A valid #GtkTreeIter, or %NULL - * @position: position to insert the new row + * @position: position to insert the new row, or -1 for last * @columns: (array length=n_values): an array of column numbers * @values: (array length=n_values): an array of GValues * @n_values: the length of the @columns and @values arrays -- 2.30.2